/**
 * 难度星星工具函数
 * 用于将数值难度转换为星星显示
 */

/**
 * 根据难度数值生成星星显示
 * @param level 难度级别，支持数字或字符串类型，范围1-5
 * @returns 返回星星字符串，实心★表示已达到的难度，空心☆表示未达到的难度
 * 
 * @example
 * getDifficultyStars(1) // "★☆☆☆☆"
 * getDifficultyStars(3) // "★★★☆☆"
 * getDifficultyStars(5) // "★★★★★"
 * getDifficultyStars("2") // "★★☆☆☆"
 * getDifficultyStars(0) // "★☆☆☆☆" (默认1星)
 * getDifficultyStars(6) // "★☆☆☆☆" (默认1星)
 */
export function getDifficultyStars(level: number | string): string {
  const numLevel = typeof level === 'string' ? parseInt(level) : level;
  
  // 验证难度级别范围，无效值默认为1星
  if (!numLevel || numLevel < 1 || numLevel > 5) {
    return '★☆☆☆☆'; // 默认1星
  }
  
  // 生成对应数量的实心星星和空心星星
  const filledStars = '★'.repeat(numLevel);
  const emptyStars = '☆'.repeat(5 - numLevel);
  
  return filledStars + emptyStars;
}

/**
 * 根据难度数值获取对应的颜色
 * @param level 难度级别，支持数字或字符串类型，范围1-5
 * @returns 返回对应难度的颜色值
 * 
 * @example
 * getDifficultyColor(1) // "#90EE90" (浅绿色)
 * getDifficultyColor(3) // "#FFA500" (橙色)
 * getDifficultyColor(5) // "#FF4500" (红色)
 */
export function getDifficultyColor(level: number | string): string {
  const numLevel = typeof level === 'string' ? parseInt(level) : level;
  
  // 根据难度级别返回对应颜色
  if (!numLevel || numLevel < 1) return '#C0C0C0'; // 银色 - 最低难度
  if (numLevel === 1) return '#90EE90'; // 浅绿色 - 简单
  if (numLevel === 2) return '#FFD700'; // 金色 - 容易
  if (numLevel === 3) return '#FFA500'; // 橙色 - 中等
  if (numLevel === 4) return '#FF6347'; // 橙红色 - 困难
  if (numLevel >= 5) return '#FF4500'; // 红色 - 极难
  
  return '#FFD700'; // 默认金色
}

/**
 * 获取难度级别的文字描述
 * @param level 难度级别，支持数字或字符串类型，范围1-5
 * @returns 返回对应难度的文字描述
 * 
 * @example
 * getDifficultyText(1) // "简单"
 * getDifficultyText(3) // "中等"
 * getDifficultyText(5) // "极难"
 */
export function getDifficultyText(level: number | string): string {
  const numLevel = typeof level === 'string' ? parseInt(level) : level;
  
  // 根据难度级别返回对应文字描述
  if (!numLevel || numLevel < 1) return '未知';
  if (numLevel === 1) return '简单';
  if (numLevel === 2) return '容易';
  if (numLevel === 3) return '中等';
  if (numLevel === 4) return '困难';
  if (numLevel >= 5) return '极难';
  
  return '未知';
}

/**
 * 难度级别常量
 */
export const DIFFICULTY_LEVELS = {
  UNKNOWN: 0,
  EASY: 1,
  SIMPLE: 2,
  MEDIUM: 3,
  HARD: 4,
  EXTREME: 5
} as const;

/**
 * 难度颜色映射
 */
export const DIFFICULTY_COLORS = {
  [DIFFICULTY_LEVELS.UNKNOWN]: '#C0C0C0',
  [DIFFICULTY_LEVELS.EASY]: '#90EE90',
  [DIFFICULTY_LEVELS.SIMPLE]: '#FFD700',
  [DIFFICULTY_LEVELS.MEDIUM]: '#FFA500',
  [DIFFICULTY_LEVELS.HARD]: '#FF6347',
  [DIFFICULTY_LEVELS.EXTREME]: '#FF4500'
} as const;

/**
 * 难度文字映射
 */
export const DIFFICULTY_TEXTS = {
  [DIFFICULTY_LEVELS.UNKNOWN]: '未知',
  [DIFFICULTY_LEVELS.EASY]: '简单',
  [DIFFICULTY_LEVELS.SIMPLE]: '容易',
  [DIFFICULTY_LEVELS.MEDIUM]: '中等',
  [DIFFICULTY_LEVELS.HARD]: '困难',
  [DIFFICULTY_LEVELS.EXTREME]: '极难'
} as const;

/**
 * 统一的金色星星颜色（用于不需要区分难度颜色的场景）
 */
export const UNIFIED_STAR_COLOR = '#FFD700';
